package com.hundsun.yuntai;

import org.apache.log.Logger;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;


public class jmeter_test extends AbstractJavaSamplerClient {
	
	/*
	 * 输出到Jmeter控制台的日志类；
	 * 需要引用Jmeter lib目录下的logkit-2.0.jar
	 */
	private Logger log = getLogger();
	private SampleResult results; //运行结果
	private static String testStr; //Jmeter控制台输入的参数
	
	/*
	 * 设置传入的参数，可以设置多个，已设置的参数会显示到Jmeter的参数列表中；
	 */
	public Arguments getDefaultParameters(){
		log.info("Execute getDefaultParameters...");
		System.out.println("开始获取默认参数！！");
		Arguments params = new Arguments();
		
		/*
		 * 定义一个参数，显示到Jmeter的参数列表中；
		 * 第一个参数为参数默认显示的名称；
		 * 第二个参数为默认值
		 */
		params.addArgument("testStr","");
		return params;
	}
	
	/*
	 * 初始化方法，实际运行时每个线程仅执行一次，在测试方法运行前执行；
	 * 类似于LR中的init()方法
	 */
	public void setupTest(JavaSamplerContext arg0){
		log.info("Start Execute setUpTest...");
		System.out.println("开始执行setupTest");
		results = new SampleResult();
		testStr = arg0.getParameter("testStr","zxw");//初始化默认参数
		
		if(results !=null && testStr.length()>0){
			results.setSamplerData(testStr);
		}
	}

	/*
	 * 测试执行的循环体，根据线程数和循环次数的不同可执行多次
	 */
	public SampleResult runTest(JavaSamplerContext arg0) {
		log.info("Start Execute runTest...");
		System.out.println("开始执行runTest");
		if(testStr.length() < 0){
			log.info("fail...");
			results.setSuccessful(false);
		}else{
			log.info("TestString is:\t"+testStr);
			results.setSuccessful(true);
		}
		return results;
	}
	
	/*
	 * 结束方法，实际运行时每个线程仅执行一次，在测试方法运行结束后执行；
	 * 类似于LR中的end方法
	 */
	public void teardownTest(JavaSamplerContext arg0){
		System.out.println("开始执行teardownTest");
	}
	
	/*
	 * main函数用于本地测试，打包成jar时要注释掉！！
	 */
//	public static void main(String[] args) {
//		Arguments params = new Arguments();
//		params.addArgument(testStr, "suiyi"); //设置参数，并赋默认值
//		JavaSamplerContext arg0 = new JavaSamplerContext(params);
//		jmeter_test test = new jmeter_test();
//		
//		test.setupTest(arg0);
//		test.runTest(arg0);
//		test.teardownTest(arg0);
//	}
}
